// 插件没有window对象 window对象属于客户端浏览器 所以全局window变量都输出undefined
// 答案以浏览器输出为准


var length = 100
function f1() {
  console.log(this.length);
}
f1()  // window调用 this指向window



var obj = {
  length: 10,
  f2: f1
}
obj.f2()  // 方法被obj调用，this指向obj对象



var obj = {
  id: 1
}
console.log(obj.id);
console.log(obj['id']);     // 取对象属性的方法二，与.取值符一样都是obj对象调用，只是归属不容易看出来

function f2() {
  console.log(this);
}
var arr = [f2, 10, 100]
arr[0]()  // 打印数组 this指向数组，f2被数组调用



//一道阿里面试题 
var length = 100
function f1() {
  console.log(this.length);
}
var obj = {
  length: 10,
  f2: function (f1) {
    f1()
    arguments[0]()       // 参数集合，类似数组
  }
}
obj.f2(f1, 1)



//第二道 面试题
var a = 19
function test() {
  a = 100
  console.log(a);
  console.log(this.a);
  var a             // 如果注释这行又会是什么结果
  console.log(a);
}
test()
//换个顺序
var a = 19
function test() {
  console.log(a);
  a = 100
  console.log(this.a);
  var a
  console.log(a);
}
test()



// 美团面试题
// 注意 全局变量不会作用于同名局部变量的作用域
var a = 10
function f1() {
  var b = 2 * a
  var a = 20
  var c = a + 1
  console.log(b);
  console.log(c);
}
f1()

